package frame

import (
	"fmt"
	"io"
	"os"

	"github.com/gin-gonic/gin"
	"gopkg.in/natefinch/lumberjack.v2"
)

func SetLogs() gin.HandlerFunc {
	// 配置日志轮转
	multiWriter := io.MultiWriter(
		os.Stdout,
		&lumberjack.Logger{
			Filename:   Config.Server.Log, // 日志文件路径
			MaxSize:    100,               // 每个日志文件的最大大小(MB)
			MaxBackups: 30,                // 保留旧日志文件的最大数量
			MaxAge:     15,                // 保留旧日志文件的最大天数
			Compress:   true,              // 是否压缩/归档旧日志文件
			LocalTime:  true,              // 使用本地时间
		},
	)

	return gin.LoggerWithConfig(gin.LoggerConfig{
		Formatter: func(param gin.LogFormatterParams) string {
			return fmt.Sprintf("[GIN-C] %s | %s | %d | %v | %s\n",
				param.TimeStamp.Format("2006-01-02 15:04:05"), // 时间
				param.Method,     // 请求方式
				param.StatusCode, // 状态码
				param.Latency,    // 请求耗时
				param.Path,       // 请求路径
			)
		},
		Output: multiWriter, // 输出到文件
	})
}
